﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using EFDataModel;

public class CurrentSession
{
    #region Static
    /// <summary>
    /// Gibt das aktuelle AzSession Objekt zurück
    /// </summary>
    public static CurrentSession GetSession()
    {
        if (HttpContext.Current.Session["AzSession"] == null)
        {
            HttpContext.Current.Session["AzSession"] = new CurrentSession();
        }

        return (CurrentSession)HttpContext.Current.Session["AzSession"];
    }

    /// <summary>
    /// Gibt den aktuellen eingeloggten User anhand des Usernamens (Id) zurück
    /// </summary>
    /// <returns>WorkingUser | Null wenn dieser nicht gefunden werden kann</returns>
    public static EFUser GetCurrentUser()
    {
        string contextString = "EFCurrentUser";

        //Den aktuellen User nur für den aktuellen Request speichern
        if (HttpContext.Current.Items[contextString] == null)
        {
            string userId = HttpContext.Current.User.Identity.Name;
            if (userId.Trim().Length > 0)
            {
                try
                {
                    HttpContext.Current.Items.Add(contextString, (EFUser)CurrentHttpContext.GetDataModel().EFBaseMenge.Find(int.Parse(userId)));
                }
                catch (Exception)
                {
                    return null;
                }
            }
        }

        //Den aktuellen User aus dem Context holen
        return (EFUser)HttpContext.Current.Items[contextString];
    }

    /// <summary>
    /// Gibt zurück ob der aktuelle User eingeloggt ist.
    /// </summary>
    public static bool IsUserLoggedIn()
    {
        string userId = HttpContext.Current.User.Identity.Name;
        if (userId != null && GetCurrentUser() != null)
        {
            return true;
        }

        return false;
    }
    #endregion
}
